# -*- coding: utf-8 -*-
from ITener import ITener
class IContenible(object):
	
	"""
	Interfaz que es implementada por todos los objetos que pueden ser contenidos por otros Objetos.
	@since: 4/14/2011
	@version: 1.0
	"""
	
	__nombre=None
	""" Nombre del contenido """
	
	__porcentaje=None
	""" Porcentaje del contenido """
	
	def __init__(self, nombre="particula", porcentaje=100):
		"""
		Constructor
		@type	self: IContenible
		@param	self: referencia al objeto IContenible actual
		
		@type	nombre: string
		@param	nombre: nombre del IContenible actual. Default = "particula"
		
		@type	porcentaje: int
		@param	porcentaje: ???
		"""
		self.__nombre=nombre
		self.__porcentaje=porcentaje
		
	def setPorcentaje(self, porcentaje):
		"""
		Metodo para asignar el porcentaje del IContenible actual.
		@type	self: IContenible
		@param	self: referencia al objeto IContenible actual
		
		@type	porcentaje: int
		@param	porcentaje: nuevo valor de porcentaje
		"""
		self.__porcentaje=porcentaje
		
	def getPorcentaje(self):
		"""
		Metodo para acceder al valor del porcentaje del IContenible actual
		@type	self: IContenible
		@param	self: referencia al objeto IContenible actual
		"""
		return self.__porcentaje
		   
	def getParticula(self, porcentaje):
		"""
		??????????
		@type	self: IContenible
		@param	self: referencia al objeto IContenible actual
		
		@type	porcentaje: int
		@param	porcentaje: ???
		"""
		if(porcentaje<=self.__porcentaje):
			self.__porcentaje=self.__porcentaje-porcentaje
			particula=type(self)("", porcentaje, self.getNombre()+self.__nombre)
			if(isinstance(self, ITener)):
				particula.setElementos(self.getElementos())
				
			return particula 
		else:
			return None